@echo off
chcp 65001 > nul
REM ========================================================================
REM JAR更新工具 - Windows EXE 打包脚本
REM 功能：将JAR更新工具打包成Windows可执行文件
REM 包含：update.png图标、UnRAR.exe工具
REM ========================================================================

setlocal enabledelayedexpansion

echo.
echo ╔════════════════════════════════════════════════════════════════╗
echo ║          JAR更新工具 - Windows EXE 打包脚本                   ║
echo ╚════════════════════════════════════════════════════════════════╝
echo.

REM 检查当前目录
if not exist "src\main.py" (
    echo [错误] 请在项目根目录下运行此脚本！
    echo 当前目录: %CD%
    echo 需要的文件: src\main.py
    pause
    exit /b 1
)

REM 检查Python是否安装
echo [1/6] 检查Python环境...
python --version >nul 2>&1
if errorlevel 1 (
    echo [错误] Python未安装，请先安装Python 3.7或更高版本
    echo 下载地址: https://www.python.org/downloads/
    pause
    exit /b 1
)

python --version
echo ✓ Python已安装

REM 检查必要文件
echo.
echo [2/6] 检查必要文件...

if not exist "docs\img\update.png" (
    echo [错误] 图标文件不存在: docs\img\update.png
    pause
    exit /b 1
)
echo ✓ 图标文件: docs\img\update.png

if not exist "tools\UnRAR.exe" (
    echo [警告] UnRAR.exe不存在: tools\UnRAR.exe
    echo 将继续构建，但RAR解压功能将不可用
) else (
    echo ✓ UnRAR工具: tools\UnRAR.exe
)

REM 安装依赖
echo.
echo [3/6] 安装构建依赖...
echo 正在安装 PyInstaller 和 Pillow...

python -m pip install --upgrade pip --quiet
python -m pip install pyinstaller --quiet
python -m pip install Pillow --quiet

if errorlevel 1 (
    echo [错误] 依赖安装失败
    pause
    exit /b 1
)
echo ✓ 依赖安装完成

REM 转换图标格式 (PNG to ICO)
echo.
echo [4/6] 准备图标文件...

REM 使用Python脚本转换PNG到ICO
python -c "from PIL import Image; img = Image.open('docs/img/update.png'); img.save('docs/img/update.ico', format='ICO')" 2>nul

if exist "docs\img\update.ico" (
    echo ✓ 图标已转换: docs\img\update.ico
    set ICON_FILE=docs\img\update.ico
) else (
    echo [警告] 图标转换失败，将使用PNG文件
    set ICON_FILE=docs\img\update.png
)

REM 清理旧的构建文件
echo.
echo [5/6] 清理旧的构建文件...
if exist "build" (
    echo 删除 build 目录...
    rmdir /s /q build
)
if exist "dist" (
    echo 删除 dist 目录...
    rmdir /s /q dist
)
if exist "*.spec" (
    echo 删除旧的 spec 文件...
    del /q *.spec 2>nul
)
echo ✓ 清理完成

REM 构建EXE
echo.
echo [6/6] 开始构建可执行文件...
echo 这可能需要几分钟时间，请耐心等待...
echo.

REM 使用PyInstaller打包
pyinstaller ^
    --name="JAR更新工具" ^
    --icon="%ICON_FILE%" ^
    --onefile ^
    --windowed ^
    --clean ^
    --noconfirm ^
    --add-data="templates;templates" ^
    --add-data="static;static" ^
    --add-data="tools;tools" ^
    --hidden-import=openpyxl ^
    --hidden-import=xlrd ^
    --hidden-import=pandas ^
    --hidden-import=flask ^
    --hidden-import=werkzeug ^
    --hidden-import=jinja2 ^
    --hidden-import=rarfile ^
    --hidden-import=tkinter ^
    --hidden-import=tkinter.filedialog ^
    --hidden-import=tkinter.ttk ^
    --hidden-import=tkinter.messagebox ^
    --hidden-import=tkinter.scrolledtext ^
    src/main.py

if errorlevel 1 (
    echo.
    echo ╔════════════════════════════════════════════════════════════════╗
    echo ║                      构建失败！                                ║
    echo ╚════════════════════════════════════════════════════════════════╝
    echo.
    echo 可能的原因：
    echo 1. 缺少Python依赖包，请运行: pip install -r config\requirements.txt
    echo 2. PyInstaller版本问题，请尝试: pip install --upgrade pyinstaller
    echo 3. 文件路径问题，确保所有文件都存在
    echo.
    pause
    exit /b 1
)

REM 验证输出文件
if not exist "dist\JAR更新工具.exe" (
    echo.
    echo [错误] 可执行文件未生成
    pause
    exit /b 1
)

REM 显示文件大小
echo.
echo ════════════════════════════════════════════════════════════════
for %%I in ("dist\JAR更新工具.exe") do set SIZE=%%~zI
set /a SIZE_MB=!SIZE! / 1024 / 1024
echo 文件大小: !SIZE_MB! MB

REM 构建完成
echo.
echo ╔════════════════════════════════════════════════════════════════╗
echo ║                    构建成功！                                  ║
echo ╚════════════════════════════════════════════════════════════════╝
echo.
echo ✓ 可执行文件: dist\JAR更新工具.exe
echo ✓ 文件大小: !SIZE_MB! MB
echo ✓ 包含图标: %ICON_FILE%
echo ✓ 包含工具: tools\UnRAR.exe
echo.
echo ────────────────────────────────────────────────────────────────
echo 使用说明：
echo ────────────────────────────────────────────────────────────────
echo.
echo 1. 将 dist\JAR更新工具.exe 复制到目标Windows PC
echo 2. 双击运行即可（首次运行可能需要5-10秒）
echo 3. 支持拖拽JAR文件、ZIP/RAR包和Excel文件
echo.
echo ────────────────────────────────────────────────────────────────
echo 注意事项：
echo ────────────────────────────────────────────────────────────────
echo.
echo 1. 可能被杀毒软件误报，请添加信任
echo 2. 目标PC可能需要安装 Visual C++ Redistributable
echo    下载: https://aka.ms/vs/17/release/vc_redist.x64.exe
echo 3. UnRAR.exe已打包在内，支持RAR文件解压
echo 4. 所有静态资源和模板文件已打包
echo.
echo ────────────────────────────────────────────────────────────────
echo 测试建议：
echo ────────────────────────────────────────────────────────────────
echo.
echo 在Windows PC上测试：
echo 1. 检查程序是否正常启动
echo 2. 测试文件上传功能
echo 3. 测试JAR包更新功能
echo 4. 检查RAR文件解压是否正常
echo.
echo ════════════════════════════════════════════════════════════════

REM 询问是否打开输出目录
echo.
set /p OPEN_DIR="是否打开输出目录？(Y/N): "
if /i "%OPEN_DIR%"=="Y" (
    explorer dist
)

REM 询问是否清理构建文件
echo.
set /p CLEAN_BUILD="是否清理构建临时文件？(Y/N): "
if /i "%CLEAN_BUILD%"=="Y" (
    echo 清理中...
    if exist "build" rmdir /s /q build
    if exist "*.spec" del /q *.spec 2>nul
    echo ✓ 清理完成
)

echo.
echo 按任意键退出...
pause >nul




